package com.bawei.base

import android.app.Application
import android.content.Context
import android.util.Log
import com.alibaba.android.arouter.launcher.ARouter
import com.tencent.mmkv.MMKV

/**
 * 作者：Jason
 * 日期：2023/11/11
 * 描述：APP基类
 */
open class BaseApplication : Application() {

    companion object {
        lateinit var appContext: BaseApplication
    }

    override fun attachBaseContext(base: Context?) {
        super.attachBaseContext(base)
    }

    override fun onCreate() {
        super.onCreate()
        appContext = this

        //初始化ARouter, Debug模式（本地测试）下必须开启，否则跳转不了，其他模式下关闭
        if (BuildConfig.DEBUG) {
           ARouter.openLog()
           ARouter.openDebug()
        }
        ARouter.init(this)

        //初始化MMKV
        /**
         * MMKV实现技术原理：
         * 1.采用mmap（memory mapping）内存映射文件，将堆内存中一个块区域映射成文件
         * 2.使用protobuf序列化协议来操作映射文件，与直接操作内存性能一样
         * 3.采用链式存储，新增对象append到末尾（导致链条过长导致读写性能问题）
         * 4.Android中写入时间大概在280毫秒左右，其他平台20毫秒左右
         */
        var rootDir = MMKV.initialize(this)
        Log.i("", "mmk映射文件路径: $rootDir")


    }



}